As is known in the art, edge computing systems and applications which utilize such systems are an emerging distributed computing paradigm. In edge-computing, users (or “clients”) interact with servers on an edge of a network. Such servers are thus said to form a first layer of servers. The edge servers, in turn, interact with a second layer of servers in a backend of the edge computing system and thus are (referred to as “backend layer servers”. While the edge servers are typically in geographic proximity to clients, the backend layer of servers are often provided as part of a data-center or a cloud center which is typically geographically distant from the clients and edge servers. The geographic proximity of the edge servers to clients permits high speed operations between clients and the edge layer, whereas communication between the edge servers and the backend is typically much slower. Such decentralized edge processing or computing is considered to be a key enabler for Internet of Things (IoT) technology.
As is also known, providing consistent access to stored data is a fundamental problem in distributed computing systems, in general, and in edge computing systems, in particular. Irrespective of the actual computation involved, application programs (also referred to simply as “applications” or more simply “apps”) in edge computing systems must typically write and read data. In settings where several writers attempt to concurrently or simultaneously update stored data, there is potential confusion on the version of data that should be stored during write operations and returned during read operations. Thus, implementation of strong consistency mechanisms for data access is an important problem in edge computing systems and is particularly important in those systems which handle massive amounts of data from many users.
To reduce, and ideally minimize, potential confusion with respect to different versions of the same data, consistency policies (or rules) may be imposed and implemented to deal with problems which arise because of concurrent access of data by clients. One well-known and widely acknowledged, and the most desirable form of consistency policy is known as “atomicity” or “strong consistency” which, at an application level, gives users of a distributed system (e.g. an edge computing system) the impression of a single machine executing concurrent read and write operations as if the executions take place one after another (i.e. sequentially). Thus, atomicity, which in simple terms, gives the users of a data service the impression that the various concurrent read and write operations take place sequentially. An ideal consistency solution should complete client operations via interaction only with the edge layer, whenever possible, thereby incurring low latency.
This is not possible, however, in all situations since practical edge servers have finite resources such as finite storage capacity and in some systems and/or uses the edge layer servers may be severely restricted in their total storage capacity as well as in other resources. For example, in situations where several thousands of files are being serviced, the edge servers typically do not have the capacity to store all the files all the time. In such situations, the edge servers rely upon the backend layer of servers for permanent storage of files that are less frequently accessed. Thus, the servers in the first layer act as virtual clients of the second layer servers.
Although various consistency policies (often weaker than strong consistency) are widely implemented and used in conventional processing systems, there is a lack of efficient implementations suitable for edge-computing systems. One important challenge in edge-computing systems, as described above, is reducing the cost of operation of the backend layer servers. Communication between the edge layer servers and backend layer servers, and persistent storage in the backends layer contribute to the cost of operation of the backend layer. Thus, cost reduction may be accomplished by making efficient use of the edge layer servers.